package com.mashiro.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mashiro.system.domain.MoeFund;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 资金Mapper接口
 *
 * @author mashiro
 * @date 2023-04-15
 */
public interface MoeFundMapper extends BaseMapper<MoeFund> {
    /**
     * 查询资金
     *
     * @param id 资金主键
     * @return 资金
     */
    public MoeFund selectMoeFundById(Long id);

    /**
     * 查询资金
     *
     * @param id 项目ID
     * @return 资金
     */
    public MoeFund selectMoeFundByProjectId(Long id);
    /**
     * 查询资金列表
     *
     * @param moeFund 资金
     * @return 资金集合
     */
    public List<MoeFund> selectMoeFundList(MoeFund moeFund);

    /**
     * 新增资金
     *
     * @param moeFund 资金
     * @return 结果
     */
    public int insertMoeFund(MoeFund moeFund);

    /**
     * 修改资金
     *
     * @param moeFund 资金
     * @return 结果
     */
    public int updateMoeFund(MoeFund moeFund);

    /**
     * 删除资金
     *
     * @param id 资金主键
     * @return 结果
     */
    public int deleteMoeFundById(Long id);

    /**
     * 批量删除资金
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMoeFundByIds(Long[] ids);

    /**
     * 是否存在资金子节点
     *
     * @param id 资金ID
     * @return 结果
     */
    public int hasChildByFundId(Long id);

    /**
     * 是否存在资金子节点
     *
     * @param projectId 项目ID
     * @param taskId 任务ID
     * @return 结果
     */
    public MoeFund getFundInfo(@Param("projectId") Long projectId, @Param("taskId") Long taskId);

    /**
     * 计算项目已使用资金情况
     *
     * @param projectId 项目ID
     * @return 结果
     */
    public MoeFund getProjectUsedFunding(@Param("projectId") Long projectId);

    /**
     * 查询资金通过项目id列表
     *
     * @param ids 项目ID
     * @return 资金
     */
    public List<MoeFund> selectMoeFundListByProjectIds(@Param("fund")MoeFund moeFund,@Param("projectIds")Long[] ids);

}
